.#{$ns}Switch {
  cursor: pointer;
  position: relative;
  display: inline-block;
  width: $Switch-width;
  height: $Switch-height;
  overflow: hidden;
  border-radius: px2rem(30px);
  background-color: $Switch-onActive-bgColor;
  margin: 0;
  vertical-align: middle;
  text-align: left;

  &.is-disabled {
    background-color: $Switch-onDisabled-bgColor;
  }

  i {
    &:before {
      content: '\5173';
      color: $Switch-valueColor;
      text-indent: ($Switch-width / 2);
      text-transform: uppercase;
      font-size: $fontSizeSm;
      line-height: $Switch-height;
      font-style: normal;
      font-weight: bold;

      position: absolute;
      top: px2rem(-1px);
      bottom: px2rem(-1px);
      left: px2rem(-1px);
      right: px2rem(-1px);
      background-color: $Switch-bgColor;
      border: px2rem(1px) solid $Switch-borderColor;
      border-radius: px2rem(30px);
      transition: all 0.2s;
    }

    &:after {
      content: '';
      position: absolute;
      background-color: $white;
      width: $Switch-height - px2rem(2px);
      top: px2rem(1px);
      bottom: px2rem(1px);
      left: px2rem(1px);
      border-radius: 50%;
      // box-shadow: px2rem(1px) px2rem(1px) px2rem(3px) rgba(0, 0, 0, 0.25);
      transition: margin-left 0.3s;
    }
  }

  input {
    position: absolute;
    opacity: 0;

    &:disabled,
    &:disabled:checked {
      & + i {
        &:before {
          color: $Switch-onDisabled-color;
          background-color: $Switch-onDisabled-bgColor;
          cursor: not-allowed;
        }

        &:after {
          background-color: $Switch-onDisabled-circle-BackgroundColor;
          color: $Switch-onDisabled-color;
        }
      }
    }

    &:checked {
      & + i {
        &:before {
          left: 100%;
          border-width: 0;
        }

        &:after {
          margin-left: $Switch-width - $Switch-height;

          content: '\5f00';
          color: $white;
          text-indent: px2rem(-18px); // todo
          text-transform: uppercase;
          font-size: $fontSizeSm;
          font-weight: bold;
          font-style: normal;
          line-height: $Switch-height;
        }
      }
    }
  }
}

.#{$ns}Switch-option {
  vertical-align: middle;
  margin-left: $Switch-gap;

  &:first-child {
    margin-left: 0;
    margin-right: $Switch-gap;
  }

  &:empty {
    display: none;
  }
}

.#{$ns}SwitchControl {
  padding-top: ($Form-input-height - $Switch-height) / 2;

  &.is-inline {
    display: inline-block;
  }
}
